/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.unesp.rc.locadora.phases;

import br.unesp.rc.locadora.beans.Acesso;
import br.unesp.rc.locadora.beans.Contato;
import br.unesp.rc.locadora.beans.Endereco;
import br.unesp.rc.locadora.beans.Fisica;
import br.unesp.rc.locadora.dao.FisicaDAO;
import br.unesp.rc.locadora.dao.FisicaDAOImpl;
import br.unesp.rc.locadora.utils.ICUtil;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 *
 * @author Thales
 */
public class FisicaPhases {
    public static final int CADASTRO_CODE = 1;
    public static final int CADASTRO_PROCEDURE = 2;
    public static final int CADASTRO_CACHE = 3;
    
    public static List<String> fisicaCadastroValidationPhase(String cpf, String data, String email,
            String telefone, String cep, String usuario, String numero){
        List<String> erros = new ArrayList<String>();
        
        if(!ICUtil.validaCPF(cpf))
            erros.add("CPF inválido");
        if(!ICUtil.validaData(data))
            erros.add("Data inválida");
        if(!ICUtil.validaEmail(email))
            erros.add("E-Mail inválido");
        if(!ICUtil.validaTelefone(telefone))
            erros.add("Telefone inválido");
        if(!ICUtil.validaNumero(numero))
            erros.add("Número inválido");
        if(!ICUtil.validaCEP(cep))
            erros.add("CEP inválido");
        if(!ICUtil.validaUsuario(usuario))
            erros.add("Usuário já existente");
        
        return erros;
    }
    
    public static Fisica fisicaCadastroPopulationPhase(long cpf, String nome, Date dataNasc,
            String usuario, String senha, String telefone, String email, String rua,
            int numero, String bairro, String cep, String cidade, String estado){
        Fisica f = new Fisica();
        
        f.setCpf(cpf);
        f.setNome(nome);
        f.setDataNascimento(dataNasc);

        Acesso a = new Acesso(usuario, senha);
        f.setAcesso(a);

        Contato c = new Contato(telefone, email);
        f.setContato(c);
        
        Endereco e = new Endereco(rua, 
                numero, 
                bairro, 
                cep, cidade, estado);
        f.setEndereco(e);
        
        return f;
    }
    
    public static boolean fisicaCadastroDAOPhase(Fisica f, int module){
        FisicaDAO dao = new FisicaDAOImpl();
        boolean result = false;
        
        switch(module){
            case CADASTRO_CODE:
                result = dao.cadastrar(f);
                break;
            case CADASTRO_PROCEDURE:
                result = dao.cadastrarProc(f);
                break;
            case CADASTRO_CACHE:
                result = dao.cadastrarCache(f);
                break;
        }
        
        return result;
    }
}
